package com.dynamicthreadpool.spi.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 激活扩展点注解
 * 从Dubbo 2.7版本提取
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface Activate {

    /**
     * 分组条件。
     * <br />
     * 例如，{@code group = "provider"}表示仅当{@code URL}的协议头为{@code dubbo://}时才激活
     * 
     * @return 分组条件数组
     */
    String[] group() default {};

    /**
     * Key条件。包含{@code key}中任意一个，则激活，通过{@link com.dynamicthreadpool.spi.URL#getParameter(String)}获取
     * 
     * @return Key条件数组
     */
    String[] value() default {};

    /**
     * 排序信息，可以不提供
     * 
     * @return 排序值
     */
    String[] before() default {};

    /**
     * 排序信息，可以不提供
     * 
     * @return 排序值
     */
    String[] after() default {};

    /**
     * 排序值
     * 
     * @return 排序值
     */
    int order() default 0;
}
